Solid state disk controller apparatus

ABSTRACT

A solid state disk controller apparatus comprises a first port; a second port having a plurality of channels; a central processing unit connected to a CPU bus; a buffer memory configured to store data to be transferred from the second port to the first port and from the first port to the second port; a buffer controller/arbiter block connected to the CPU bus and configured to control read and write operations of the buffer memory based on a control of the central processing unit; a first data transfer block connected between the first port and the buffer controller/arbiter block and configured to transfer data to be stored/read in/from the buffer memory bypassing the CPU bus; and a second data transfer block connected between the second port and the buffer controller/arbiter block and configured to transfer data to be stored/read in/from the buffer memory bypassing the CPU bus.

CROSS REFERENCE TO RELATED APPLICATION

This is a Continuation of U.S. patent application Ser. No. 14/543,549,filed on Nov. 17, 2014, which is a Continuation of U.S. patentapplication Ser. No. 13/419,673, filed on Mar. 14, 2012, which is aContinuation of U.S. patent application Ser. No. 12/491,813, filed onJun. 25, 2009, which is a Continuation of U.S. patent application Ser.No. 11/311,990, filed on Dec. 19, 2005, which claims priority under 35U.S.C. §119 from Korean Patent Application No. 2005-2611, filed on Jan.11, 2005, in the Korean Intellectual Property Office, the entiredisclosures of each of which are herein incorporated by reference.

FIELD OF THE INVENTION

The present invention is related to electronic memory devices. Inparticular, the present invention is related to a solid state diskcontroller apparatus.

BACKGROUND

As known in the art, computer systems generally use several types ofmemory systems. For example, computer systems generally use so-calledmain memory comprising of semiconductor devices that can be randomlywritten to and read from with comparable and very fast access times andthus are commonly referred to as random access memories. However, sincesemiconductor memories are relatively expensive, other higher densityand lower cost memories are often used. For example, other memorysystems include magnetic disk storage systems. In the case of magneticdisk storage systems, generally, access times are in the order of tensof milliseconds. On the other hand, in the case of main memory, theaccess times are in the order of hundreds of nanoseconds. Disk storageis used to store large quantities of data which can be sequentially readinto main memory as needed. Another type of disk-like storage is solidstate disk storage (SSD, also called solid state drive). SSD is a datastorage device that uses memory chips, such as SDRAM, to store data,instead of the spinning platters found in conventional hard disk drives.

The term “SSD” is used for two different kinds of products. The firsttype of SSD, based on fast, volatile memory such as SDRAM, iscategorized by extremely fast data access and is used primarily toaccelerate applications that are contained by the latency of diskdrives. Since this SSD uses volatile memory, it typically incorporatesinternal battery and backup disk systems to ensure data persistence. Ifpower is lost for whatever reason, the battery keeps the unit poweredlong enough to copy all data from RAM to backup disk. Upon therestoration of power, data is copied back from backup disk to RAM andthe SSD resumes normal operation. The first type of SSD is especiallyuseful on a computer which is already has the maximum amount of RAM. Thesecond type of SSD uses flash memory to store data. These products,which have usually the same size as conventional storage, are typicallyused as low power, rugged replacements for hard drives. To avoidconfusion with the first type, these disks are generally referred to asflash disks. The present invention is directed to the second type ofSSD.

SUMMARY OF THE INVENTION

An object of the present invention is to provide a solid state diskcontroller apparatus capable of transferring data without limitation ofa CPU bus speed.

In accordance with one aspect of the present invention, a solid statedisk controller apparatus is provided which comprises a first port; asecond port having a plurality of channels; a central processing unitconnected to a CPU bus; and a buffer memory configured to store data tobe transferred from the second port to the first port and from the firstport to the second port. A buffer controller/arbiter block can beconnected to the CPU bus and configured to control read and writeoperations of the buffer memory based on a control of the centralprocessing unit. A first data transfer block can be connected betweenthe first port and the buffer controller/arbiter block and configured totransfer data to be stored/read in/from the buffer memory in parallel tothe CPU bus. A second data transfer block can be connected between thesecond port and the buffer controller/arbiter block and configured totransfer data to be stored/read in/from the buffer memory in parallel tothe CPU bus.

Preferably either or both of the first and second data transfer blockis/are operative to by pass the CPU bus in the transfer of data betweenthe buffer and memory and the respective first and second ports.

The term “block” as used herein refers to electronic circuitingimplements the described operations. Such circuitry can be implementedwholly by hand wire circuits, or by a combination of hardware, softwareand/or firmware.

In this embodiment, the first data transfer block can comprise a hostinterface control block connected to the CPU bus and configured tointerface with an external host through the first port according to acontrol of the central processing unit; and a first FIFO configured toprovide a data transfer path between the host interface control blockand the buffer controller/arbiter block.

In this embodiment, the first port can comprise a first channelconnected to an external host of a serial ATA interface type; a secondchannel connected to an external host of a parallel ATA interface type;a conversion block configured to convert data to be input through thefirst channel into a serial ATA format and data to be output through thefirst channel into a parallel ATA format; and a multiplexer configuredto transfer data from the first channel or from the conversion block tothe host interface control block, the multiplexer transferring data fromthe host interface block to either one of the second channel and theconversion block.

In this embodiment, the first port can be configured such that data fromthe first channel is directly transferred to the host interface controlblock and such that data from the host interface control block isdirectly transferred to the external host of the serial ATA interfacetype through the first channel.

In this embodiment, the second data transfer block can comprise aplurality of second FIFOs corresponding to the channels of the secondport, respectively; and a memory interface control block connected tothe CPU bus and configured to interface with semiconductor memoriesthrough the second port, wherein the plurality of second FIFOs areconfigured to provide data transfer paths between the memory interfacecontrol block and the buffer controller/arbiter block.

In this embodiment, the memory device can further comprise a pluralityof ECC blocks connected to the second FIFOs respectively, the pluralityof ECC blocks configured to detect errors of data transferred throughthe second FIFOs and to generate error correction codes of datatransferred to the semiconductor memories.

In this embodiment, when an error is detected from data transferredthrough corresponding FIFOs, the ECC blocks can be configured to correcterroneous data without interference of the central processing unit.

In this embodiment, each of the channels of the second port can beconnected with a plurality of non-volatile memories.

In this embodiment, the non-volatile memories connected to each channelof the second port can comprise a non-volatile memory having the sametype.

In this embodiment, either the same types or different types ofnon-volatile memories can be connected to each channel of the secondport.

In this embodiment, the second data transfer block can be configured todetect types of non-volatile memories connected to the channels of thesecond port at power-up and to control read and write operations of thenon-volatile memories of each channel according to the detected result.

In this embodiment, the second data transfer block can be configured tocontrol read and write operations of the semiconductor memoriesconnected to the channels of the second port, based on either one ofhardware and software interleave protocols when read and writeoperations are requested to the channels of the second port.

In this embodiment, the buffer controller/arbiter block can beconfigured to process data in a round-robin manner when the first andsecond FIFOs request data process operations.

In this embodiment, the memory interface control block can comprise acontrol logic configured to generate a first clock signal to betransferred to a semiconductor memory through the second port, thesemiconductor memory outputting data in synchronization with the firstclock signal; a delay circuit configured to delay the first clock signaland generate a second clock signal; and a data fetch register configuredto fetch the data from the semiconductor memory in synchronization withthe second clock signal.

In this embodiment, a delay time of the delay circuit can be determinedby delay information from an exterior source.

In this embodiment, the memory interface control block can furthercomprise a register for storing delay information that is used todetermine a delay time of the delay circuit.

In accordance with another aspect of the present invention, a solidstate disk controller apparatus is provided which a first port; a secondport having a plurality of channels; a central processing unit connectedto a CPU bus; and a buffer memory configured to store data to betransferred from the second port to the first port or from the firstport to the second port. A host interface control block can be connectedto the first port and the CPU bus and configured to interface with anexternal host according to a control of the central processing unit. Abuffer controller/arbiter block can be connected to the CPU bus andconfigured to control the buffer memory according to a control of thecentral processing unit. A first FIFO can be configured to provide adata transfer path between the host interface control block and thebuffer controller/arbiter block. A memory interface control block can beconnected to the second port and the CPU bus and configured to interfacewith non-volatile memories according to a control of the centralprocessing unit. A plurality of second FIFOs can be configured toprovide data transfer paths between the memory interface control blockand the buffer controller/arbiter block.

In this embodiment, the memory device can further comprise a pluralityof ECC blocks connected to the second FIFOs respectively, the pluralityof ECC blocks configured to detect errors of data transferred throughcorresponding second FIFOs and to generate error correction codes ofdata transferred to the non-volatile memories.

In this embodiment, when an error is detected from data transferredthrough corresponding second FIFOs, the ECC blocks can be configured tocorrect erroneous data without interference of the central processingunit.

In this embodiment, non-volatile memories connected to each channel ofthe second port can comprise non-volatile memories having the same typeswith each other.

In this embodiment, either the same types or different types ofnon-volatile memories can be connected to each channel of the secondport.

In this embodiment, the memory interface control block can be configuredto detect types of non-volatile memories connected to the channels ofthe second port at power-up and to control read and write operations ofthe non-volatile memories of each channel according to the detectedresult.

In this embodiment, the memory interface control block can be configuredto control read and write operations of the non-volatile memoriesconnected to the channels of the second port, based on either one ofhardware and software interleave protocols when read and writeoperations are requested to the channels of the second port.

In this embodiment, the buffer controller/arbiter block can beconfigured to process data in a round-robin manner when the first andsecond FIFOs request data process operations.

In this embodiment, the memory interface control block can comprise acontrol logic configured to generate a first clock signal to betransferred to a semiconductor memory through the second port, thesemiconductor memory outputting data in synchronization with the firstclock signal; a delay circuit configured to delay the first clock signaland generate a second clock signal; and a data fetch register configuredto fetch the data from the semiconductor memory in synchronization withthe second clock signal.

In this embodiment, a delay time of the delay circuit can be determinedby delay information from an exterior source.

In this embodiment, the memory interface control block can furthercomprise a register for storing delay information that is used todetermine a delay time of the delay circuit.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete appreciation of the present invention, and many of theattendant advantages thereof, will become readily apparent from thefollowing detailed description when considered in conjunction with theaccompanying drawings in which like reference symbols indicate the sameor similar components, wherein:

FIG. 1 is a block diagram showing an embodiment of a solid state diskcontroller apparatus according to the present invention;

FIG. 2 is a block diagram showing a bus architecture for connecting abuffer controller/arbiter block and FIFOs in FIG. 1;

FIGS. 3A and 3B are timing diagrams for describing operations of abuffer controller/arbiter block and FIFOs;

FIG. 4 is a block diagram showing a bus architecture of an ECC block inFIG. 1;

FIG. 5 is a timing diagram for describing error detecting and correctingoperations of an ECC block in FIG. 1;

FIG. 6 is a block diagram showing one of n channels of a flash interfacecontrol block in FIG. 1;

FIG. 7 to FIG. 9 are timing diagrams for describing a write procedureaccording to a 4-way interleave protocols;

FIG. 10 is a block diagram showing a flash interface control block inFIG. 1;

FIG. 11 is a timing diagram showing a fetch clock signal delayed by adelay circuit of a flash interface control block in FIG. 10;

FIG. 12 is a block diagram showing memory types connected to channels ofa flash interface control block; and

FIG. 13 is a block diagram showing another structure of a second channelsupported by a solid state controller apparatus according to the presentinvention.

DESCRIPTION OF A PREFERRED EMBODIMENT

A preferred embodiment of the invention will be more fully describedwith reference to the attached drawings.

FIG. 1 is a block diagram showing a solid state disk controllerapparatus according to a preferred embodiment of the present invention.A solid state disk controller apparatus 1000 comprises a first port(PORT A) and a second port (PORT B). The solid state disk controllerapparatus 1000 exchanges data with an external host (not shown) throughthe first port PORT A. The first port comprises two channels: a parallelAT attachment (PATA) bus 1001 and a serial AT attachment (SATA) bus1002. The second port PORT B comprises a plurality of channels, each ofwhich is electrically connected to a plurality of non-volatile memories.Herein, the same types of memories are connected to each channel. Anon-volatile memory connected to one channel comprises a single-levelflash memory, a multi-level flash memory, a OneNAND flash memory (it isa single chip in which a flash memory core and memory control logic areintegrated), or the like. For example, single-level flash memories areconnected to one channel, multi-level flash memories are connected toanother channel, and OneNAND flash memories are connected to the otherchannel. A SATA interface (in FIG. 1, marked by “SATA I/F”) 1100 iscalled a device dongle and converts serial/parallel data intoparallel/serial data. For example, the SATA interface 1100 receivesserial data transferred through a SATA bus 1002 and converts thereceived serial data into parallel data. The SATA interface 1100converts parallel data from a multiplexer 1200 into serial data. Themultiplexer 1200 transfers parallel data provided through the PATA bus1001 to the host interface control block 1300. The multiplexer 1200transfers data from the host interface control block 1300 to the PATAbus 1001 or the SATA interface 1100. It is previously determined whetheranyone of the PATA bus 1001 and the SATA bus 1002 of the first port isused.

Continuing to refer to FIG. 1, the host interface control block 1300 isconnected to the PATA bus 1001 (or, called “an internal IDE bus”), theSATA bus 1002, and a CPU bus 1003. The host interface control block 1300performs an interface operation according to a control of a centralprocessing unit (CPU) 1400. Data to be input/output through the hostinterface control block 1300 is stored in a buffer memory 1700 through abuffer controller/arbiter block 1600 and a FIFO (L_FIFO) 1500, withoutpassing through the CPU bus 1003. For example, externally input data isstored in the buffer memory 1700 through the host interface controlblock 1300, the L_FIFO 1500, and the buffer controller/arbiter block1600 under the control of the CPU 1400. Likewise, stored data in thebuffer memory 1700 is output to the exterior through the buffercontroller/arbiter block 1600, the L_FIFO 1500, and the host interfacecontrol block 1300.

A data transfer operation of the solid state disk controller apparatus1000 can be carried out without using the CPU bus 1003, so that a datatransfer speed is not affected by a CPU bus speed.

The L FIFO 1500 is connected between the host interface control block1300 and the buffer controller/arbiter block 1500. In a case wherebandwidths of the internal buses 1004 and 1005 are different from eachother, the L_FIFO 1500 is used to temporarily store data that is notprocessed while data is transferred. The size of the L_FIFO 1500 isdetermined such that the L_FIFO 1500 is not filled up during a datatransfer operation. The host interface control block 1300 comprises aregister 1301, in which operating commands and addresses from theexterior are stored. The host interface control block 1300 communicatesa write or read operation to the CPU 1400 through the CPU bus 1003 inresponse to stored information in the register 1301. The CPU 1400controls the host interface control block 1300 and the buffercontroller/arbiter block 1600 based on input information. This will bemore fully described below.

A flash interface control block 1800 exchanges data with externalnon-volatile memories through a second port. The flash interface controlblock 1800 is configured to support the NAND flash memories, theOne_NAND flash memories, and multi-level flash memories. The flashinterface control block 1800 comprises a predetermined number ofchannels. A channel can be connected with any of a plurality ofnon-volatile memories. Channels can be connected with the same types ofmemories or can be connected with different types of memories. Inaddition, in a case in which various types of non-volatile memories areconnected to the second port, the solid state disk controller apparatus1000 supports a function for diagnosing types of non-volatile memories,connected to the second port, at booting. This function is easilyaccomplished by means of a well-known read operation for device ID. Whenread and program operations are carried out to different channels, theflash interface control block 1800 of the present solid state diskcontroller apparatus 1000 selectively performs software and hardwareinterleave operations.

Data transferred through the flash interface control block 1800 isstored in the buffer memory 1700 through a FIFO Ri_FIFO (i=0−n) and thebuffer controller/arbiter block 1600.

Data transferred through the flash interface control block 1800 isstored in the buffer memory 1700 through a FIFO Ri_FIFO (i=0−n) and thebuffer controller/arbiter block 1600, without passing through the CPUbus 1003. For example, data input through the second port is stored inthe buffer memory 1700 through the flash interface control block 1800,the Ri_FIFO, and the buffer controller/arbiter block 1600 under thecontrol of the CPU 1400. Likewise, stored data in the buffer memory 1700is transferred to the second port through the buffer controller/arbiterblock 1600, the Ri_FIFO, and the flash interface control block 1800under the control of the CPU 1300. A data transfer operation of thesolid state disk controller apparatus 1000 can be carried out withoutusing of the CPU bus 1003, so that its data transfer speed is notaffected by the CPU bus speed. The FIFOs R0_FIFO-Rn_FIFO are connectedbetween the flash interface control block 1800 and the buffercontroller/arbiter block 1600. In a case in which bandwidths of theinternal buses 1006<n:0> and 1007<n:0> are different from each other,the FIFOs R0_FIFO-Rn_FIFO are used to temporarily store data that is notprocessed while data is transferred. The size of each of the FIFOsR0_FIFO-Rn_FIFO is determined such that each of the FIFOs Ri FIFO is notfilled up during a data transfer operation.

The buffer controller/arbiter block 1600 is configured to control readand write operations of the buffer memory 1700. For example, the buffercontroller/arbiter block 1600 stores data input through the L_FIFO orthe Ri_FIFO in the buffer memory 1700. The buffer controller/arbiterblock 1600 reads out from the buffer memory 1700 data to be written to anon-volatile memory or to be output to the exterior. The buffercontroller/arbiter block 1600 is configured to process data in around-robin way when data processing requests coincide. In this case, itis preferable to limit the amount of data to be processed at once sothat it does not take a long time to process any request. The buffercontroller/arbiter block 1600 has enough data processing ability toprocess simultaneous requests of the FIFOs R0_FIFO-Rn_FIFO. That is,data process capacity is identical to or larger than a total bandwidth(L_FIFO+R0_FIFO+ . . . +Rn_FIFO).

Error checking and correction (ECC) blocks 1900_0-1900_n arerespectively connected to the FIFOs R0_FIFO-Rn_FIFO which are connectedin parallel between the buffer controller/arbiter block 1600 and theflash interface control block 1800. When data is transferred from theflash interface control block 1800 to the buffer memory 1700 through anyFIFO (e.g., R0_FIFO), an ECC block 1900_0 corresponding to the R0_FIFOcarries out an error detecting operation for data transferred throughthe R0_FIFO. If an error is detected from the transferred data, the ECCblock 1900_0 is configured to request error correction to the buffercontroller/arbiter block 1600 and to correct erroneous data in thebuffer memory 1700. Each of the ECC blocks 1900_0-1900_n generates ECCdata when main data is transferred to the flash interface control block1800 through a corresponding FIFO. ECC data thus generated is stored ina non-volatile memory, connected to the second port, with the main dataunder the control of the flash interface control block 1800.

The buffer memory 1700 is used to store data to be transferred to theexterior (e.g., an external host or a non-volatile memory). In addition,the buffer memory 1700 is used to store programs operated by the CPU1400. The buffer memory 1700 preferably consists of SRAM. The buffermemory 1700 can consist of both SRAM for storing data to be transferredto the exterior and SRAM for storing programs and data operated by theCPU 1400. But, it is obvious to one skilled in the art that the type andallocation of buffer memory are not limited to the specific example ofthis disclosure.

The CPU 1400 generates a command by use of values in control registers1301 and 1801 in the control blocks 1300 and 1800. The CPU 1400 sets thecontrol registers 1301 and 1801 with control information for read andwrite operations. For example, when a read/write command is receivedfrom the exterior, it is stored in the register 1301 of the hostinterface control block 1300. The host interface control block 1300informs the CPU 1400 that a read/write command is received, based on thestored command in the register 1301. The CPU 1400 controls the blocks1300 and 1600 according to a read/write command. In addition, the CPU1400 stores a read/write command in the register 1801 of the flashinterface control block 1800. The flash interface control block 1800controls a read/write operation of non-volatile memories through thesecond port based on the stored command in the register 1801.

In accordance with this embodiment of the present invention, when aread/write operation for non-volatile memories connected to the secondport is required, a data transfer operation is carried out not throughthe CPU bus 1003 in the solid state disk controller apparatus 1000, butthrough a FIFO path. That is, data transferring from the first port tothe second port (or from the second port to the first port) can becarried out without using the CPU bus 1003, so that a data transferspeed of the present solid state disk controller apparatus 1000 is notaffected by a speed of the CPU bus 1003.

FIG. 2 is a block diagram showing the bus architecture for connecting abuffer controller/arbiter block and FIFOs in FIG. 1, and FIGS. 3A and 3Bare timing diagrams for describing operations of the buffercontroller/arbiter block and the FIFOs.

Referring to FIG. 2, buffer controller/arbiter block 1600 is configuredto acknowledge the data processing request when a data processingoperation is requested from FIFOs L_FIFO and R0_FIFO-Rn_FIFO. A busbetween the L_FIFO and the buffer controller/arbiter block 1600 isconfigured to transfer a request signal REQ0, a grant signal GRT0, aread/write distinction signal RW0, an address ADDRESS0, read data RD0,write data WD0, and a data valid interval signal D_VALID0. Likewise,each of buses 1006_0-1006_n between the FIFOs R0_FIFO-Rn_FIFO and thebuffer controller/arbiter block 1600 is configured to transfer a requestsignal REQ1, a grant signal GRT1, a read/write distinction signal RW1,an address ADDRESS1, read data RD1, write data WD1, and a data validinterval signal D_VALID1.

In the case of transferring data from the buffer memory 1700 to theL_FIFO, as illustrated in FIG. 3A, the L_FIFO activates a request signalREQ0 for a read operation. At the same time, an address ADDRESS0 of datato be read is transferred from the L_FIFO to the buffercontroller/arbiter block 1600. When the request signal REQ0 isactivated, the buffer controller/arbiter block 1600 activates the grantsignal GRT0 when a previous process is ended. As the data processingrequest is granted, the L_FIFO sequentially sends addresses to thebuffer controller/arbiter block 1600. The buffer controller/arbiterblock 1600 reads data from the buffer memory 1700 according to receivedaddresses and outputs the read data to the L_FIFO during activation of avalid data interval signal D_VALID0. At this time, the L_FIFOinactivates the request signal REQ0 when a predetermined amount of data(e.g., eight N-bit data) is received. This inactivation enables thebuffer controller/arbiter block 1600 to process the request of anotherFIFO.

In the case of transferring data from the L_FIFO to the buffer memory1700, as illustrated in FIG. 3B, the L_FIFO activates the request signalREQ0 for a write operation. When the request signal REQ0 is activated,the buffer controller/arbiter block 1600 activates the grant signal GRT0when a previous process is ended. As the data processing request isgranted, the L FIFO sequentially sends addresses with data to be writtento the buffer controller/arbiter block 1600. The buffercontroller/arbiter block 1600 writes received data in the buffer memory1700 according to received addresses. At this time, the L_FIFOinactivates the request signal REQ0 when a predetermined amount of data(e.g., eight N-bit data) is output. This inactivation enables the buffercontroller/arbiter block 1600 to process the request of another FIFO.

Data transfer from the buffer memory 1700 to a Ri_FIFO via a bus 1006_iis carried out in the same manner as illustrated in FIG. 3A, and datatransfer from a Ri_FIFO via a bus 1006_i to the buffer memory 1700 iscarried out in the same manner as illustrated in FIG. 3B. Thus, adescription of read and write operations related to the FIFOsR0_FIFO-Rn_FIFO is omitted.

FIG. 4 is a block diagram showing the bus architecture of an ECC blockin FIG. 1, and FIG. 5 is a timing diagram for describing an errordetecting and correcting operation of an ECC block.

Referring to FIG. 4, an exemplary bus for connecting an ECC block 1900_0and a R0_FIFO is configured to transfer an ECC request signal ECC_REQ,ECC read/write distinction signal ECC_RW, an ECC address ECC_ADDRESS,ECC remedy data ECC_RMWD, an ECC grant signal ECC_GRT, and ECC read dataECC_RD.

Assume that data is transferred to buffer memory 1700 through R0_FIFO.If an error is detected from transferred data, ECC block 1900_0activates an ECC request signal ECC_REQ, which is transferred to thebuffer controller/arbiter block 1600 through the R0_FIFO with an ECCaddress ADD1 of erroneous data. The buffer controller/arbiter block 1600activates the grant signal ECC_GRT when the request signal ECC_REQ isreceived together with the address ADD1. At this time, the ECCread/write distinction signal ECC_RW is maintained high so as toindicate a read operation. When the ECC read/write distinction signalECC_RW is ATA high level, erroneous data is read from the buffer memory1700 under the control of the buffer controller/arbiter block 1600. Theerroneous data ECC RD thus read is transferred to the ECC block 1900_0through the R0_FIFO. The erroneous data ECC RD is corrected by the ECCblock 1900_0, and the error-corrected data ECC RMWD is transferred tothe buffer controller/arbiter block 1600 through the R0_FIFO. At thistime, the ECC read/write distinction signal ECC_RW goes to a low levelindicating a write operation. The buffer controller/arbiter block 1600stores the error-corrected data ECC_RWMD in the buffer memory 1700 inresponse to the ECC read/write distinction signal ECC_RW. Afterwards,the buffer controller/arbiter block 1600 inactivates the grant signalECC_GRT.

FIG. 6 is a block diagram showing one of the channels of a flashinterface control block in FIG. 1.

Referring to FIG. 6, one channel is connected with a plurality ofnon-volatile memories. In this example, the non-volatile memoriesconsist of NAND flash memories. As well known in the art, the NAND flashmemory has a command/address/data multiplexed I/O structure. This meansthat commands, data, and addresses are provided through input/outputpins. Assuming that one channel is connected with four non-volatilememories, it comprises input/output lines 1802 commonly connected tomemories MO, M1, M2 and M3, four chip enable signal lines 1803 a-1803 drespectively connected to corresponding memories, and four ready/busysignal lines 1804 a-1804 d respectively connected to correspondingmemories. In addition, although not shown in this figure, controlsignals such as /WE, /RE, CLE, ALE, etc. are commonly provided to thememories M0-M3.

Assume that four flash memories M0-M3 are connected to one channel.Under this assumption, write operations of hardware and softwareinterleave protocols will be more fully described below. In order toperform a write operation, a CPU 1400 stores a write command in aregister 1801 of a flash interface control block 1800 through a CPU bus1003 (see FIG. 1). The flash interface control block 1800 performs awrite operation for flash memories in response to the stored writecommand in the register 1801. In the case of the above-described channelstructure, if the number of sectors to be written is over 2, writeoperations for flash memories are preferably carried out according tohardware and software interleave protocols. Firstly, a write operationof the hardware interleave protocol will be described with reference toFIG. 7. A timing diagram for describing a write procedure according to4-way interleaving is illustrated in FIG. 7.

Referring to FIG. 7, once a write command for any channel is written inthe register 1801 of the flash interface control block 1800 by the CPU1400, the flash interface control block 1800 continuously transfers datato be programmed to flash memories M0-M3 without intervention of the CPU1400. For example, data to be programmed is continuously transferred tothe flash memory M0 through a channel (that is, input/output lines) 1802following a command and an address, and the transferred data isprogrammed in a memory cell array of the flash memory M0 during apredetermined time tPROG(M0). While a write operation for the flashmemory M0 is carried out, as illustrated in FIG. 7, the flash interfacecontrol block 1800 transfers data to be programmed to the flash memoryM1 through the channel (that is, input/output lines) 1802. Likewise,data to be programmed in the flash memories M2 and M3 is transferred inthe same manner as described above. Accordingly, the channel is occupiedby each of the flash memories M0-M3 during transferring of commands,addresses and data. In addition, the channel is occupied by each flashmemory during a status read period for judging whether a write operationis passed or failed. Once all data is programmed, the flash interfacecontrol block 1800 informs the CPU 1400 that a write operation is ended.Data to be programmed in flash memories commonly connected to thechannel is data read out from the buffer memory 1700.

Below, a write operation of a software interleave protocol will bedescribed with reference to FIG. 8. FIG. 8 is a timing diagram fordescribing a write operation according to 4-way interleaving under theassumption that a program time of a flash memory is maintained constant.

Referring to FIG. 8, once a write command for any channel is written inthe register 1801 of the flash interface control block 1800 by the CPU1400, the flash interface control block 1800 controls write operationsof flash memories M0-M3 according to a control of the CPU 1400. Forexample, data WD0 to be programmed is sequentially transferred to theflash memory M0 through a channel (that is, input/output lines) 1802following a command and an address. Once the data WD0 is transferred tothe flash memory M0, the flash interface control block 1800 informs theCPU 1400 that transferring of data to the flash memory M0 is ended. TheCPU 1400 stores in the register 1801 a write command together withinformation of a channel where program data is transferred. These steps(in FIG. 8, a period marked by ‘a’) are carried out within a periodtPROG where data WD0 transferred to the flash memory M0 is programmed.If a write command is again written in the register 1801, the flashinterface control block 1800 sequentially transfers program data WD1 tothe flash memory M1 through a channel (that is, input/output lines)following a command and an address. Likewise, transferring of data toflash memories M2 and M3 is carried out in the same manner as describedabove, and description thereof is thus omitted.

Like the hardware interleave protocol, the channel is occupiedsequentially by each flash memory during a period in which a command, anaddress and data are transferred. In addition, the channel is occupiedby each flash memory during a status read period for judging whether awrite operation is passed or failed.

Unlike the above assumption that a program time of a flash memory ismaintained constant, the program time tPROG of a flash memory is notmaintained constant. That is, since program times of flash memories canbe different, as illustrated in FIG. 9, time loss occurs during a writeoperation of the software interleave protocol.

FIG. 10 is a block diagram showing a flash interface control block inFIG. 1.

As well know, data is transferred to a flash interface control block1800 from a flash memory using a control signal such as REB. In thiscase, transferring of data to the flash interface control block 1800from the flash memory is affected by line loading of input/output linesor flight time. That is, as illustrated in FIG. 10, a time fortransferring data at a point A to a point A′ is varied according tosystem configuration. In order to overcome this variation, it ispreferable to adjust a fetch time of a fetch clock signal F_CLK fordetermining a data fetch timing of an internal data fetch register 1810.A delay circuit 1820 generates the fetch clock signal F_CLK in responseto an REB signal applied to a flash memory, and the fetch clock signal FCLK is applied to a data fetch register 1810. In particular, a delaytime of the delay circuit 1820 is adjusted by a value set in a register1830 of the flash interface control block 1800 or by a value appliedthrough an external pad 1840. As illustrated in FIG. 11, data, which isATA point A and output in synchronization with the REB signal, reachespoint A′ after a delay time Δt. Accordingly, it is possible to stablyfetch data transferred from a flash memory by delaying the REB signal byΔt and generating the fetch clock signal F CLK.

FIG. 12 is a block diagram showing memory types that are capable ofbeing connected to channels of a flash interface control block.

Referring to FIG. 12, one channel CH. 1 is commonly connected with NANDflash memories where I-bit data is stored in each cell, another channelCH. 2 is commonly connected with NAND flash memories where N-bit data isstored in each cell, and the other channel CH. n is commonly connectedwith OneNAND flash memories. But, it is readily apparent that differenttypes of non-volatile memories can be connected to each channel.

FIG. 13 is a block diagram showing another structure of a second channelsupported by the solid state disk controller apparatus 1000.

Referring to FIG. 13, a flash memory having an input/output bitorganization of ×16 is configured by parallel connecting two flashmemories (chip 1 and chip 2) each having an input/output bitorganization of ×8. In accordance with this channel structure, it ispossible to double the number of flash memories and a storagecapability. One of two chips uses input/output lines 10[7:0], and theother uses input/output lines 10[15:8]. In this case, all controlsignals are shared by the chips.

As above described, as a data transfer operation of the solid state diskcontroller apparatus 1000 is carried out not through a CPU bus butthrough a FIFO path, a data transfer speed of the solid state diskcontroller apparatus is not affected by a CPU bus speed.

The invention has been described using exemplary preferred embodiments.However, it is to be understood that the scope of the invention is notlimited to the disclosed embodiment. On the contrary, it is intended tocover various modifications and similar arrangements. The scope of theclaims, therefore, should be accorded the broadest interpretation so asto encompass all such modifications and similar arrangements.

I claim:
 1. A solid state drive (SSD) comprising: a plurality ofnonvolatile memory devices; a buffer memory; a host interface circuitconfigured to interface signals including a command and data with anexternal host device; a central processing unit (CPU) configured tocontrol a read operation and a write operation of the SSD in response tothe command; a first buffer circuit configured to interface the databetween the host interface circuit and the buffer memory; a flashinterface circuit configured to control the plurality of nonvolatilememory devices under a control of the CPU; a plurality of channelsconnected between the flash interface circuit and the plurality ofnonvolatile memory devices; a plurality of second buffer circuitsconfigured to interface the data between the buffer memory and the flashinterface circuit, the plurality of second buffer circuits correspondingto the plurality of nonvolatile memory devices, the plurality of secondbuffer circuits being configured to communicate with the plurality ofnonvolatile memory devices via the flash interface circuit; and one ormore error checking and correcting (ECC) circuits configured to detectand correct errors on the data transferred from the plurality ofnonvolatile memory devices to the plurality of second buffer circuits,wherein each of the plurality of channels corresponds to respective oneof the plurality of second buffer circuits, and at least two nonvolatilememory devices among the plurality of nonvolatile memory devices share acontrol signal.
 2. The SSD of claim 1, wherein the control signal is achip enable signal.
 3. The SSD of claim 2, wherein the at least twononvolatile memory devices are connected to the same channel among theplurality of channels.
 4. The SSD of claim 2, wherein the at least twononvolatile memory devices are connected to different channels to eachother.
 5. The SSD of claim 1, wherein the one or more ECC circuitsincludes a plurality of ECC circuits, and each of the plurality ofchannels corresponds to respective one of the plurality of ECC circuits.6. The SSD of claim 1, wherein the host interface circuit, the flashinterface circuit, the plurality of second buffer circuits, the one ormore ECC circuits and the CPU are included in a controller configured tocontrol the plurality of nonvolatile memory devices and the buffermemory.
 7. The SSD of claim 1, wherein the data includes read data forthe read operation and write data for the write operation, the read datais transmitted to the host interface circuit from the buffer memorythrough the first buffer circuit, and the write data is transmitted tothe buffer memory from the host interface circuit through the firstbuffer circuit.
 8. The SSD of claim 1, wherein the data includes readdata for the read operation and write data for the write operation, thewrite data is transmitted to the flash interface circuit from the buffermemory through the plurality of second buffer circuits, and the readdata is transmitted to the buffer memory from the flash interfacecircuit during the read operation through the plurality of second buffercircuits.
 9. The SSD of claim 1, further comprising an arbiter circuitconfigured to transmit write data from the first buffer circuit andtransmit the write data to the second buffer circuit from the buffermemory during the write operation, and configured to transmit read datato the buffer memory from the second buffer circuit and transmit theread data to the first buffer circuit from the buffer memory during theread operation, wherein the data includes the write data and the readdata.
 10. The SSD of claim 9, wherein a first bandwidth between thearbiter circuit and the first buffer circuit is different from a secondbandwidth between the arbiter circuit and the plurality of second buffercircuits.
 11. The SSD of claim 9, wherein a first bandwidth between thefirst buffer circuit and the host interface circuit is different from asecond bandwidth between the first buffer circuit and the arbitercircuit.
 12. The SSD of claim 9, wherein a first bandwidth between theplurality of second buffer circuits and the arbiter circuits isdifferent from a second bandwidth between the plurality of second buffercircuits and the flash interface circuits.
 13. The SSD of claim 1,wherein the CPU is connected to the host interface circuit and the flashinterface circuit through a command bus, and is configured to controlthe host interface circuit and the flash interface circuit through thecommand bus, the command bus is isolated from a first data path wherethe data is transferred between the host interface circuit and thebuffer memory, and the command bus is isolated from a second data pathwhere the data is transferred between the flash interface circuit andthe buffer memory.
 14. The SSD of claim 1, wherein the at least twononvolatile memory devices among the plurality of nonvolatile memorydevices are commonly connected to each of a plurality of I/O lines. 15.The SSD of claim 1, wherein the flash interface circuit is configured totransmit first write data to one of the at least two nonvolatile memorydevices among the plurality of nonvolatile memory devices, andconfigured to transmit second write data to other at least twononvolatile memory devices among the plurality of nonvolatile memorydevices while the first write data is programmed at the one of the atleast two nonvolatile memory devices.
 16. The SSD of claim 1, whereinthe plurality of second buffer circuits are FIFO circuits.
 17. A methodof operating a solid state drive (SSD), comprising: receiving data by abuffer memory; transmitting the data to a plurality of buffer circuitsfrom the buffer memory, each of the plurality of buffer circuitscorresponding to a respective one of a plurality of channels andreceiving a corresponding portion of the data; transmitting a controlsignal to at least two nonvolatile memory devices among a plurality ofnonvolatile memory devices, the at least two nonvolatile memory devicescorresponding to the same channel among the plurality of channels;transmitting first data to a first one of the at least two nonvolatilememory device from a first buffer circuit among the plurality of buffercircuits; transmitting the control signal to the at least twononvolatile memory devices among the plurality of nonvolatile memorydevices; and transmitting second data to a second one of the at leasttwo nonvolatile memory devices from the first buffer circuit while thefirst data is programmed in the first one of the at least twononvolatile memory devices, wherein the first data and the second dataare included in a portion of the data transmitted to the first buffercircuit.
 18. The method of claim 17, wherein the at least twononvolatile memory devices among the plurality of nonvolatile memorydevices are commonly connected to each of a plurality of I/O lines. 19.A method of operating a solid state drive (SSD), comprising: receivingdata by a buffer memory; transmitting the data to a plurality of buffercircuits from the buffer memory, each of the plurality of buffercircuits corresponding to a respective one of a plurality of channelsand receiving a corresponding portion of the data; transmitting a firstcontrol signal to at least two nonvolatile memory devices among aplurality of nonvolatile memory devices, the at least two nonvolatilememory devices corresponding to the same channel among the plurality ofchannels; transmitting first data to one of the at least two nonvolatilememory device from a first buffer circuit among the plurality of buffercircuits; transmitting a second control signal to other at least twononvolatile memory devices among the plurality of nonvolatile memorydevices; and transmitting second data to one of the other at least twononvolatile memory devices from the first buffer circuit while the firstdata is programmed in the one of the at least two nonvolatile memorydevices, wherein the first data and the second data are included in aportion of the data transmitted to the first buffer circuit.
 20. Themethod of claim 19, wherein, among the plurality of nonvolatile memorydevices, at least two nonvolatile memory devices that are connected tothe same channel among the plurality of channels are commonly connectedto each of a plurality of I/O lines.